package com.wuze.cloud.util;

import java.io.*;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

/**
 * @author: wuze
 * @description:
 * @date: 2023/03/05
 */
public class DownLoadZipUtil {
    /**
     * 功能描述:  将文件打包的方法，需要传一个压缩路径，和一个文件，一次只将一个文件写入压缩包
     *
     * @param filePath     文件路径
     * @param zipOut       压缩流
     * @param realFileName 真实的文件名
     * @return void
     * @author 码不多
     * @date 2021/8/21
     */
    public static void fileToZip(String filePath, ZipOutputStream zipOut, String realFileName) throws IOException {
        //创建文件输入流
        FileInputStream fileInput = new FileInputStream(filePath);
        // 缓冲
        byte[] bufferArea = new byte[1024 * 10];
        BufferedInputStream bufferStream = new BufferedInputStream(fileInput, 1024 * 10);
        // 将当前文件作为一个zip实体写入压缩流,realFileName代表压缩文件中的文件名称
        zipOut.putNextEntry(new ZipEntry(realFileName));
        int length = 0;
        // 写操作
        while ((length = bufferStream.read(bufferArea, 0, 1024 * 10)) != -1) {
            zipOut.write(bufferArea, 0, length);
        }
        //关闭流
        fileInput.close();
        // 需要注意的是缓冲流必须要关闭流,否则输出无效
        bufferStream.close();
        // 压缩流不必关闭,使用完后再关
    }

    public static void main(String[] args) throws IOException {
        ZipOutputStream zipOut = null;
        try {
            zipOut = new ZipOutputStream(new FileOutputStream("C:\\Users\\19414\\Desktop\\file-manager-db\\zip-temp\\aaa.zip"));
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        String filePath = "C:\\Users\\19414\\Desktop\\file-manager-db\\2023-03-16\\1bf62f039db3efc4d09a0a7e79ac8932.txt";
        String realFileName = "root\\aaa.txt";
        fileToZip(filePath,zipOut,realFileName);

        zipOut.close();

    }

}
